트리 순회
📔 문제 설명
이진 트리를 표현한 배열 nodes를 인자로 받습니다. 예를 들어서 nodes가 [1,2,3,4,5,6,7]이면 다음과 같은 트리를 표현한 것입니다. 해당 이진 트리에 대하여 전위 순회, 중위 순회, 후위 순회 결과를 반환하는 solution() 함수를 구현하세요.
📓 제약 조건
입력 노드값의 개수는 1개 이상 1000개 이하이다.
노드값은 정수형이며, 중복되지 않는다.
📓 입출력의 예
nodes | return |
---|---|
[1,2,3,4,5,6,7] | ["1 2 3 4 5 6 7","4 2 5 1 6 3 7","4 5 2 6 7 3 1"] |
❗ 1번째
이 문제는 전위 , 중위 , 후위 순회가 어떤식으로 이루어지는지 트리 순회에 대한 기초적인 개념을 바탕으로 생각하여 코드를 짜는 문제다.
✅ 실행 코드
function 전위순회(nodes,i){
if(i < nodes.length){
let r = `${nodes[i]} `;
r += 전위순회(nodes, i * 2 + 1);
r += 전위순회(nodes, i * 2 + 2);
return r;
}
return "";
}
function 중위순회(nodes,i){
if(i < nodes.length){
let r = 중위순회(nodes,i * 2 + 1)
r += `${nodes[i]} `;
r += 중위순회(nodes,i * 2 + 2);
return r;
}
return "";
}
function 후위순회(nodes,i){
if(i < nodes.length){
let r = 후위순회(nodes,i * 2 + 1);
r += 후위순회(nodes,i * 2 + 2);
r += `${nodes[i]}`
return r
}
return "";
}
function solution(nodes){
return[
전위순회(nodes,0).slice(0,-1),
중위순회(nodes,0).slice(0,-1),
후위순회(nodes,0).slice(0,-1),
]
}
📚 문제 느낀점
순위를 들으면 어떤식으로 순회가 되는지 알고는 있었지만 막상 이걸 구현을 할려니 막혀서 책을 보면서 하나하나 다시 되짚어 봤습니다.
이를 바탕으로 한번 약했던 트리문제도 잘 풀어보겠습니다
© 문제 출처
저자 출제